/**
 * 路径解析器
 * 帮助模块正确引用其他模块和全局助手
 */

/**
 * 获取项目根目录下的助手路径
 * @param {string} helperName - 助手名称
 * @param {string} context - 调用上下文，可选值：'service', 'page'
 * @returns {string} 完整路径
 */
function getRootHelperPath(helperName, context = 'page') {
  if (context === 'page') {
    // 页面上下文 (projects/xxx/pages/default/helpers)
    return `../../../../../helpers/${helperName}`;
  } else {
    // 服务上下文 (projects/oa/services/xxx/yyy)
    return `../../../../helpers/${helperName}`;
  }
}

/**
 * 获取当前项目下的助手路径
 * @param {string} helperName - 助手名称
 * @param {string} context - 调用上下文，可选值：'service', 'page'
 * @returns {string} 完整路径
 */
function getProjectHelperPath(helperName, context = 'page') {
  if (context === 'page') {
    // 页面上下文
    return `../../../helpers/${helperName}`;
  } else {
    // 服务上下文
    return `../../helpers/${helperName}`;
  }
}

/**
 * 获取配置文件路径
 * @param {string} configName - 配置文件名称
 * @param {string} context - 调用上下文，可选值：'service', 'page'
 * @returns {string} 完整路径
 */
function getConfigPath(configName, context = 'page') {
  if (context === 'page') {
    // 页面上下文
    return `../../../../../config/${configName}`;
  } else {
    // 服务上下文
    return `../../../../config/${configName}`;
  }
}

/**
 * 获取当前项目配置文件路径
 * @param {string} configName - 配置文件名称
 * @param {string} context - 调用上下文，可选值：'service', 'page'
 * @returns {string} 完整路径
 */
function getProjectConfigPath(configName, context = 'page') {
  if (context === 'page') {
    // 页面上下文
    return `../../../config/${configName}`;
  } else {
    // 服务上下文
    return `../../config/${configName}`;
  }
}

/**
 * 获取项目服务路径
 * @param {string} servicePath - 服务相对路径
 * @param {string} context - 调用上下文，可选值：'service', 'page' 
 * @returns {string} 完整路径
 */
function getServicePath(servicePath, context = 'page') {
  if (context === 'page') {
    // 页面上下文
    return `../../../services/${servicePath}`;
  } else {
    // 服务上下文
    return `../${servicePath}`;
  }
}

/**
 * 获取miniprogram_npm模块路径
 * @param {string} modulePath - 模块相对路径
 * @param {string} context - 调用上下文，可选值：'service', 'page'
 * @returns {string} 完整路径
 */
function getNpmPath(modulePath, context = 'page') {
  if (context === 'page') {
    // 页面上下文
    return `../../../../../miniprogram_npm/${modulePath}`;
  } else {
    // 服务上下文
    return `../../../../miniprogram_npm/${modulePath}`;
  }
}

module.exports = {
  getRootHelperPath,
  getProjectHelperPath,
  getConfigPath,
  getProjectConfigPath,
  getServicePath,
  getNpmPath
};